package com.dlwx.parttimetalent.ui;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.dlwx.parttimetalent.R;
import com.dlwx.parttimetalent.base.BaseActivity;
import com.dlwx.parttimetalent.bean.BaseBean;
import com.dlwx.parttimetalent.bean.ImageBean;
import com.dlwx.parttimetalent.comm.Constant;
import com.dlwx.parttimetalent.comm.Http;
import com.dlwx.parttimetalent.inter.GetAgeInter;
import com.dlwx.parttimetalent.utils.DealResult;
import com.dlwx.parttimetalent.utils.OkgoUtil;
import com.dlwx.parttimetalent.utils.SPUtils;
import com.dlwx.parttimetalent.utils.ToastUtils;
import com.dlwx.parttimetalent.views.AgeDialog;
import com.google.gson.reflect.TypeToken;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.model.Response;

import java.io.File;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import de.hdodenhof.circleimageview.CircleImageView;

public class SetAgeActivity extends BaseActivity implements GetAgeInter {

    @BindView(R.id.title_left_one_btn)
    ImageView titleLeftOneBtn;
    @BindView(R.id.image_header)
    CircleImageView imageHeader;
    @BindView(R.id.tv_age)
    TextView tvAge;
    @BindView(R.id.tv_confirm)
    TextView tvConfirm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set_age);
        ButterKnife.bind(this);

    }

    private void startPic() {
        // 进入相册 以下是例子：用不到的api可以不写
        PictureSelector.create(this)
                .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
//                .theme()//主题样式(不设置为默认样式) 也可参考demo values/styles下 例如：R.style.picture.white.style
                .maxSelectNum(1)// 最大图片选择数量 int
//                .minSelectNum(1)// 最小选择数量 int
//                .imageSpanCount(4)// 每行显示个数 int
//                .selectionMode( PictureConfig.SINGLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
                .previewImage(true)// 是否可预览图片 true or false
//                .previewVideo()// 是否可预览视频 true or false
//                .enablePreviewAudio() // 是否可播放音频 true or false
                .isCamera(true)// 是否显示拍照按钮 true or false
                .imageFormat(PictureMimeType.PNG)// 拍照保存图片格式后缀,默认jpeg
                .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
                .sizeMultiplier(0.5f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
                .setOutputCameraPath("/CustomPath")// 自定义拍照保存路径,可不填
                .enableCrop(false)// 是否裁剪 true or false
                .compress(true)// 是否压缩 true or false
//                .glideOverride()// int glide 加载宽高，越小图片列表越流畅，但会影响列表图片浏览的清晰度
//                .withAspectRatio()// int 裁剪比例 如16:9 3:2 3:4 1:1 可自定义
                .hideBottomControls(true)// 是否显示uCrop工具栏，默认不显示 true or false
                .isGif(false)// 是否显示gif图片 true or false
//                .compressSavePath(getPath())//压缩图片保存地址
                .freeStyleCropEnabled(true)// 裁剪框是否可拖拽 true or false
                .circleDimmedLayer(true)// 是否圆形裁剪 true or false
                .showCropFrame(false)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false   true or false
                .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false    true or false
                .openClickSound(false)// 是否开启点击声音 true or false
//                .selectionMedia()// 是否传入已选图片 List<LocalMedia> list
                .previewEggs(false)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
//                .cropCompressQuality()// 裁剪压缩质量 默认90 int
                .minimumCompressSize(100)// 小于100kb的图片不压缩
                .synOrAsy(true)//同步true或异步false 压缩 默认同步
//                .cropWH()// 裁剪宽高比，设置如果大于图片本身宽高则无效 int
                .rotateEnabled(true) // 裁剪是否可旋转图片 true or false
                .scaleEnabled(true)// 裁剪是否可放大缩小图片 true or false
//                .videoQuality()// 视频录制质量 0 or 1 int
//                .videoMaxSecond(15)// 显示多少秒以内的视频or音频也可适用 int
//                .videoMinSecond(10)// 显示多少秒以内的视频or音频也可适用 int
//                .recordVideoSecond()//视频秒数录制 默认60s int
                .forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code
    }

    @OnClick({R.id.title_left_one_btn, R.id.image_header, R.id.tv_age, R.id.tv_confirm})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.title_left_one_btn:

                break;
            case R.id.image_header:
                startPic();
                break;
            case R.id.tv_age:
                AgeDialog dialog=new AgeDialog(this,this,false);
                dialog.show();
                break;
            case R.id.tv_confirm:
//                startActivity(new Intent(SetAgeActivity.this,SetLabelActivity.class));
                confirm();
                break;
        }
    }

    private void confirm() {
        String sex= (String) SPUtils.get(this,Constant.SEX,"");
        String nickName= (String) SPUtils.get(this,Constant.NICK_NAME,"");
        if(TextUtils.isEmpty(imageUrl)){
            ToastUtils.toastForShort(this,"请先上传头像");
            return;
        }
        if(TextUtils.isEmpty(tvAge.getText().toString())){
            ToastUtils.toastForShort(this,"请先选择年龄");
            return;
        }

        loadingDialog.show();
        OkgoUtil.post(Http.InitUserBasic,this)
                .params("sex",sex)
                .params("nickname",nickName)
                .params("birth",age)
                .params("zodiac",star)
                .params("headurl",imageUrl)
                .execute(new StringCallback() {
                    @Override
                    public void onSuccess(Response<String> response) {
                        loadingDialog.dismiss();
                        BaseBean parentBean=DealResult.getInstance().dealDatas(SetAgeActivity.this,response,new TypeToken<BaseBean>() {}.getType());
                        if(parentBean==null){return;}
                        if(parentBean.getCode()==Constant.SUCESS){
                            SPUtils.put(SetAgeActivity.this, Constant.HEAD_URL,imageUrl);
                            startActivity(new Intent(SetAgeActivity.this,SetLabel1211Activity.class));
                        }else{
                            ToastUtils.toastForShort(SetAgeActivity.this,parentBean.getResult());
                        }
                    }

                    @Override
                    public void onError(Response<String> response) {
                        super.onError(response);
                        loadingDialog.dismiss();
                        ToastUtils.toastForShort(SetAgeActivity.this,getString(R.string.bad_net));
                    }
                });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case PictureConfig.CHOOSE_REQUEST:
                    // 图片选择结果回调
                    List<LocalMedia> selectList = PictureSelector.obtainMultipleResult(data);
                    // 例如 LocalMedia 里面返回三种path
                    // 1.media.getPath(); 为原图path
                    // 2.media.getCutPath();为裁剪后path，需判断media.isCut();是否为true
                    // 3.media.getCompressPath();为压缩后path，需判断media.isCompressed();是否为true
                    // 如果裁剪并压缩了，以取压缩路径为准，因为是先裁剪后压缩的
                    if(selectList.isEmpty()){return;}
                    LocalMedia media = selectList.get(0);
                    File f;
                    if(media.isCompressed()){
//                        Glide.with(SetAgeActivity.this).load(media.getCompressPath()).into(imageHeader);
                        f=new File(media.getCompressPath());
                    }else{
                        f=new File(media.getPath());
                    }
                    upload(f);
                    break;
            }
        }
    }

    private String age;
    private String star;
    @Override
    public void getAge(int year, int month, int day, String start) {
        age=year+"-"+month+"-"+day;
        star=start;
        tvAge.setText(year+"-"+month+"-"+day+"    ("+start+")");
    }
    private String imageUrl="";
    private void upload(File f){
        loadingDialog.show();
        OkgoUtil.post(Http.UPLOAD_IMAGE,this)
                .params("type","head")
                .params("images",f)
                .execute(new StringCallback() {
                    @Override
                    public void onSuccess(Response<String> response) {
                        loadingDialog.dismiss();
                        ImageBean parentBean= DealResult.getInstance().dealDatas(SetAgeActivity.this,response,new TypeToken<ImageBean>() {}.getType());
                        if(parentBean==null){return;}
                        if(parentBean.getCode()== Constant.SUCESS){
                            ImageBean.BodyBean bean = parentBean.getBody();
                            imageUrl=bean.getImageurl();
                            Glide.with(SetAgeActivity.this).load(imageUrl).into(imageHeader);
                        }else {
                            ToastUtils.toastForShort(SetAgeActivity.this,parentBean.getResult());
                        }
                    }

                    @Override
                    public void onError(Response<String> response) {
                        super.onError(response);
                        loadingDialog.dismiss();
                    }
                });
    }
}
